package 春招冲刺百题计划;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-04-24
 * Time:16:30
 */

import java.util.HashMap;

/**
 * 春招冲刺百题计划:387. 字符串中的第一个唯一字符
 * 已解答
 * 简单
 * 相关标签
 * 相关企业
 * 给定一个字符串 s ，找到 它的第一个不重复的字符，并返回它的索引 。如果不存在，则返回 -1 。
 * 示例 1：
 * 输入: s = "leetcode"
 * 输出: 0
 */
public class firstUniqChar {
    /**
     * 执行用时分布
     * 30ms
     * 击败32.50%使用 Java 的用户
     * 消耗内存分布
     * 44.01MB
     * 击败81.57%使用 Java 的用户
     */
    public int firstUniqChar(String s) {
        HashMap<Character,Integer> hash = new HashMap<>();
        for(char c:s.toCharArray()){
            hash.put(c,hash.getOrDefault(c,0) + 1);
        }
        for(char c:s.toCharArray()){
            if(hash.get(c) == 1){
                return s.indexOf(c);
            }
        }
        return -1;
    }
//   执行用时分布
//4ms
//击败96.98%使用 Java 的用户
//消耗内存分布
//44.31MB
//击败12.04%使用 Java 的用户
//    public int firstUniqChar(String s) {
//        char[] chars = s.toCharArray();
//        int[] lets = new int[26];
//        for (char c : chars) {
//            lets[c - 'a']++;
//        }
//
//        for (int i = 0; i < chars.length; i++) {
//            if (lets[chars[i] - 'a'] == 1) {
//                return i;
//            }
//        }
//        return -1;
//    }
}
